package com.zzj.ecology.system.mapper.system;

import com.zzj.ecology.system.bean.system.SysRole;
import com.zzj.ecology.system.bean.system.SysRoleExample;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface SysRoleMapper {
    long countByExample(SysRoleExample example);

    int deleteByExample(SysRoleExample example);

    int deleteByPrimaryKey(Integer roleId);

    int insert(SysRole record);

    int insertSelective(SysRole record);

    List<SysRole> selectByExample(SysRoleExample example);

    SysRole selectByPrimaryKey(Integer roleId);

    int updateByExampleSelective(@Param("record") SysRole record, @Param("example") SysRoleExample example);

    int updateByExample(@Param("record") SysRole record, @Param("example") SysRoleExample example);

    int updateByPrimaryKeySelective(SysRole record);

    int updateByPrimaryKey(SysRole record);

    /**
     * 根据用户主键查询用户的角色权限
     * @param userid
     * @return
     */
    List<SysRole> findRolesByUserId(Integer userid);

    /**
     * 分页查询 角色 列表数据
     * @param first
     * @param pageCounts
     * @return
     */
    List<SysRole> findPageList(Integer first, Integer pageCounts);

    /**
     * 根据用户ID删除 用户-角色 的关联, sys_user_role 表中的关联数据, 注意此操作为非标记删除
     * @param userId
     * @return
     */
    int deleteRolesByUserId(Integer userId);

    /**
     * 创建用户的角色关联
     * insert into sys_user_role(user_id,role_id) values (),(),()...
     * @param userId 用户id
     * @param roleIds 角色ID
     * @return
     */
    int insertRolesByUserId(@Param("id") Integer userId, @Param("list") List<Integer> roleIds);

    /**
     * 删除角色操作, 标记删除 标记 delete_status = '1' 表示删除,并更新用户的修改时间及修改人字段
     * @param roleids
     * @param username
     * @param deleteStatusDelete
     * @return
     */
    int updateDeleteStatusByIds(@Param("list") List<Integer> roleids, @Param("updateBy") String username, @Param("deleteStatus") String deleteStatusDelete);










    /**
     * 根据用户登录名称查询用户角色列表
     * @param username
     * @return
     */
    //List<SysRole> findRolesByUsername(String username);


    /**
     * 根据 sys_url 主键查询 url 对应的角色权限
     * @param urlId
     * @return
     */
    List<SysRole> findRolesByUrlId(Integer urlId);

    /**
     * 更新 SysRole 中的 修改人员和修改时间
     * @param roleId
     * @param updateAt
     * @param updateBy
     * @return
     */
    int updateUpdateAtAndUpdateByByRoleId(@Param("roleId") Integer roleId, @Param("updateAt") Date updateAt, @Param("updateBy") String updateBy);
}